<?php

/********************** 3.2  将时间和日期部分转换为纪元时间戳 *****************/

// 问题：希望知道一组时间和日期部分对应那个纪元时间戳

// 解决方案：如果你的时间和日期部分对应本地时区，可用使用 mktime()

$local = mktime(7, 8, 42, 11, 27, 2020);

// 1606432122

// 如果你的时间和日期对应 GMT 时区，可以使用 gmmktime()

$then = gmmktime(7, 8, 42, 11, 27, 2020);
// 1606460922

// 如何你的时间和日期部分包含一个格式化时间字符串中 可以使用
// DateTime::createFromFormat()

$then = DateTime::createFromFormat(DateTime::ATOM, "2020-11-27T07:22:48-05:00");
//object(DateTime)#1 (3) {
//  ["date"]=>
//  string(26) "2020-11-27 07:22:48.000000"
//  ["timezone_type"]=>
//  int(1)
//  ["timezone"]=>
//  string(6) "-05:00"
//}


/********************** 3.3  将纪元时间戳转换为时间和日期部分 *****************/

// 问题：希望得到一个特定纪元时间戳对应的时间和日期部分

// 解决方案：将纪元时间戳传入 getdate()

$timePart = getdate(1606432122);
//array(11) {
//  ["seconds"]=>
//  int(42)
//  ["minutes"]=>
//  int(8)
//  ["hours"]=>
//  int(7)
//  ["mday"]=>
//  int(27)
//  ["wday"]=>
//  int(5)
//  ["mon"]=>
//  int(11)
//  ["year"]=>
//  int(2020)
//  ["yday"]=>
//  int(331)
//  ["weekday"]=>
//  string(6) "Friday"
//  ["month"]=>
//  string(8) "November"
//  [0]=>
//  int(1606432122)
//}

$when = new DateTime("@1606432122");
$when->setTimezone(new DateTimeZone("America/Los_Angeles"));
$parts = explode('/', $when->format('Y/m/d/H/i/s'));


/********************** 3.4  以指定格式输出日期或时间  *****************/

// 问题：需要输出以一种特定方式格式化的日期或时间

// 解决方案：date() 或 DateTime::format()

print date('d/M/Y') . PHP_EOL;

$when = new DateTime();
print $when->format('d/M/Y');